package com.atguigu;

import org.junit.Test;

/**
 * 运算符之四：逻辑运算符
 * &  &&  |  || ! ^
 * <p>
 * 说明：
 * 1.逻辑运算符操作的都是boolean类型的变量
 *
 * @author : leimingchao
 * @date Date : 2021年07月15日 1:07
 */
public class LogicTest {

    public static void main(String[] args) {
        //区分 & 与 &&
        //相同点1：& 与 && 的运算结果相同
        //相同点2：当符号左边是true时，二者都会执行符号右边的运算
        //不同点：当符号左边是false时，&继续执行符号右边的运算，而&&不再执行符号右边的运算
        //开发中，推荐使用&&
        boolean b1 = true;
        b1 = false;
        int num1 = 10;
        if (b1 & (num1++ > 0)) {
            System.out.println("我现在在北京");
        } else {
            System.out.println("我现在在南京");
        }

        System.out.println("num1 = " + num1);
        System.out.println("******************************");
        boolean b2 = true;
        b2 = false;
        int num2 = 10;
        if (b2 && (num2++ > 0)) {
            System.out.println("我现在在北京");
        } else {
            System.out.println("我现在在南京");
        }

        System.out.println("num2 = " + num2);
        System.out.println("******************************");
        //区分 | 与 ||
        //相同点1：| 与 || 的运算结果相同
        //相同点2：当符号左边是false时，二者都会执行符号右边的运算
        //不同点：当符号左边是true时，|继续执行符号右边的运算，而||不再执行符号右边的运算
        //开发中，推荐使用||
        boolean b3 = false;
        b3 = true;
        int num3 = 10;
        if (b3 | (num3++ > 10)) {
            System.out.println("我现在在北京");
        } else {
            System.out.println("我现在在南京");
        }
        System.out.println("num3 = " + num3);
        System.out.println("*******************************");
        boolean b4 = false;
        b4 = true;
        int num4 = 10;
        if (b4 || (num4++ > 10)) {
            System.out.println("我现在在北京");
        } else {
            System.out.println("我现在在南京");
        }
        System.out.println("num4 = " + num4);
    }

    @Test
    public void test() {

        int x = 1;
        int y = 1;
        if (x++ == 2 & ++y == 2) {
            x = 7;
        }
        System.out.println("x=" + x + ",y=" + y);
    }

    @Test
    public void test2() {

        int x = 1, y = 1;
        if (x++ == 2 && ++y == 2) {
            x = 7;
        }
        System.out.println("x=" + x + ",y=" + y);
    }

    @Test
    public void test3() {

        int x = 1, y = 1;
        if (x++ == 1 | ++y == 1) {
            x = 7;
        }
        System.out.println("x=" + x + ",y=" + y);
    }

    @Test
    public void test4() {

        int x = 1, y = 1;
        if (x++ == 1 || ++y == 1) {
            x = 7;
        }
        System.out.println("x=" + x + ",y=" + y);
    }

    @Test
    public void test5() {

        boolean x = true;
        boolean y = false;
        short z = 42;
        //if(y == true)
        if ((z++ == 42) && (y = true)) {
            z++;
        }
        if ((x = false) || (++z == 45)) {
            z++;
        }

        System.out.println("z =" + z);

    }

}
